package org.example.batch.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.batch.pojo.BatchSubTable;

import java.util.List;

/**
 * 子任务的mapper层
 *
 * @author hero生仔
 * @date 2025/7/26
 */
@Mapper
public interface BatchSubTaskDao {

    String queryBatchSubTaskStatus(String subTaskId);

    /**
     * 查询子任务信息
     *
     * @param subTaskId 子任务id
     * @return 子任务信息
     */
    BatchSubTable queryBatchSubTableInfo(@Param("subTaskId") String subTaskId);

    /**
     * 查询子任务信息
     *
     * @param mainTaskId 主任务id
     * @return 子任务信息
     */
    List<BatchSubTable> queryBatchSubTableInfoByMainTaskId(@Param("mainTaskId") String mainTaskId);

    /**
     * 查询子任务信息集合
     *
     * @param subTaskId 子任务id
     * @return 子任务信息集合
     */
    List<BatchSubTable> queryBatchSubTableInfos(@Param("subTaskId") String subTaskId);

    /**
     * 批量插入子任务集合
     *
     * @param batchSubTableList 子任务集合
     */
    void batchInsertSubTableInfos(@Param("list") List<BatchSubTable> batchSubTableList);

    /**
     * 插入子任务
     *
     * @param batchSubTable 子任务
     */
    int updateSubTableInfo(BatchSubTable batchSubTable);

    /**
     * 插入子任务
     *
     * @param batchSubTable 子任务
     */
    void updateSubTableMsg(BatchSubTable batchSubTable);

    int updateSubTableStatus(BatchSubTable batchSubTable);

    /**
     * 传入主任务id进来删除
     *
     * @param mainTaskId 主任务id
     */
    void deleteSubTable(String mainTaskId);

    /**
     * 传入子任务id进来删除
     *
     * @param subTaskIdList 子任务id集合
     */
    void deleteSubTables(@Param("list") List<String> subTaskIdList);
}
